#include "tensor4.h"


struct ResNet
{
	t4::tensor4f conv1_weight;
	t4::tensor1f bn1_weight;
	t4::tensor1f bn1_bias;
	t4::tensor1f bn1_running_mean;
	t4::tensor1f bn1_running_var;
	t4::tensor4f layer1_0_conv1_weight;
	t4::tensor1f layer1_0_bn1_weight;
	t4::tensor1f layer1_0_bn1_bias;
	t4::tensor1f layer1_0_bn1_running_mean;
	t4::tensor1f layer1_0_bn1_running_var;
	t4::tensor4f layer1_0_conv2_weight;
	t4::tensor1f layer1_0_bn2_weight;
	t4::tensor1f layer1_0_bn2_bias;
	t4::tensor1f layer1_0_bn2_running_mean;
	t4::tensor1f layer1_0_bn2_running_var;
	t4::tensor4f layer1_0_conv3_weight;
	t4::tensor1f layer1_0_bn3_weight;
	t4::tensor1f layer1_0_bn3_bias;
	t4::tensor1f layer1_0_bn3_running_mean;
	t4::tensor1f layer1_0_bn3_running_var;
	t4::tensor4f layer1_0_downsample_0_weight;
	t4::tensor1f layer1_0_downsample_1_weight;
	t4::tensor1f layer1_0_downsample_1_bias;
	t4::tensor1f layer1_0_downsample_1_running_mean;
	t4::tensor1f layer1_0_downsample_1_running_var;
	t4::tensor4f layer1_1_conv1_weight;
	t4::tensor1f layer1_1_bn1_weight;
	t4::tensor1f layer1_1_bn1_bias;
	t4::tensor1f layer1_1_bn1_running_mean;
	t4::tensor1f layer1_1_bn1_running_var;
	t4::tensor4f layer1_1_conv2_weight;
	t4::tensor1f layer1_1_bn2_weight;
	t4::tensor1f layer1_1_bn2_bias;
	t4::tensor1f layer1_1_bn2_running_mean;
	t4::tensor1f layer1_1_bn2_running_var;
	t4::tensor4f layer1_1_conv3_weight;
	t4::tensor1f layer1_1_bn3_weight;
	t4::tensor1f layer1_1_bn3_bias;
	t4::tensor1f layer1_1_bn3_running_mean;
	t4::tensor1f layer1_1_bn3_running_var;
	t4::tensor4f layer1_2_conv1_weight;
	t4::tensor1f layer1_2_bn1_weight;
	t4::tensor1f layer1_2_bn1_bias;
	t4::tensor1f layer1_2_bn1_running_mean;
	t4::tensor1f layer1_2_bn1_running_var;
	t4::tensor4f layer1_2_conv2_weight;
	t4::tensor1f layer1_2_bn2_weight;
	t4::tensor1f layer1_2_bn2_bias;
	t4::tensor1f layer1_2_bn2_running_mean;
	t4::tensor1f layer1_2_bn2_running_var;
	t4::tensor4f layer1_2_conv3_weight;
	t4::tensor1f layer1_2_bn3_weight;
	t4::tensor1f layer1_2_bn3_bias;
	t4::tensor1f layer1_2_bn3_running_mean;
	t4::tensor1f layer1_2_bn3_running_var;
	t4::tensor4f layer2_0_conv1_weight;
	t4::tensor1f layer2_0_bn1_weight;
	t4::tensor1f layer2_0_bn1_bias;
	t4::tensor1f layer2_0_bn1_running_mean;
	t4::tensor1f layer2_0_bn1_running_var;
	t4::tensor4f layer2_0_conv2_weight;
	t4::tensor1f layer2_0_bn2_weight;
	t4::tensor1f layer2_0_bn2_bias;
	t4::tensor1f layer2_0_bn2_running_mean;
	t4::tensor1f layer2_0_bn2_running_var;
	t4::tensor4f layer2_0_conv3_weight;
	t4::tensor1f layer2_0_bn3_weight;
	t4::tensor1f layer2_0_bn3_bias;
	t4::tensor1f layer2_0_bn3_running_mean;
	t4::tensor1f layer2_0_bn3_running_var;
	t4::tensor4f layer2_0_downsample_0_weight;
	t4::tensor1f layer2_0_downsample_1_weight;
	t4::tensor1f layer2_0_downsample_1_bias;
	t4::tensor1f layer2_0_downsample_1_running_mean;
	t4::tensor1f layer2_0_downsample_1_running_var;
	t4::tensor4f layer2_1_conv1_weight;
	t4::tensor1f layer2_1_bn1_weight;
	t4::tensor1f layer2_1_bn1_bias;
	t4::tensor1f layer2_1_bn1_running_mean;
	t4::tensor1f layer2_1_bn1_running_var;
	t4::tensor4f layer2_1_conv2_weight;
	t4::tensor1f layer2_1_bn2_weight;
	t4::tensor1f layer2_1_bn2_bias;
	t4::tensor1f layer2_1_bn2_running_mean;
	t4::tensor1f layer2_1_bn2_running_var;
	t4::tensor4f layer2_1_conv3_weight;
	t4::tensor1f layer2_1_bn3_weight;
	t4::tensor1f layer2_1_bn3_bias;
	t4::tensor1f layer2_1_bn3_running_mean;
	t4::tensor1f layer2_1_bn3_running_var;
	t4::tensor4f layer2_2_conv1_weight;
	t4::tensor1f layer2_2_bn1_weight;
	t4::tensor1f layer2_2_bn1_bias;
	t4::tensor1f layer2_2_bn1_running_mean;
	t4::tensor1f layer2_2_bn1_running_var;
	t4::tensor4f layer2_2_conv2_weight;
	t4::tensor1f layer2_2_bn2_weight;
	t4::tensor1f layer2_2_bn2_bias;
	t4::tensor1f layer2_2_bn2_running_mean;
	t4::tensor1f layer2_2_bn2_running_var;
	t4::tensor4f layer2_2_conv3_weight;
	t4::tensor1f layer2_2_bn3_weight;
	t4::tensor1f layer2_2_bn3_bias;
	t4::tensor1f layer2_2_bn3_running_mean;
	t4::tensor1f layer2_2_bn3_running_var;
	t4::tensor4f layer2_3_conv1_weight;
	t4::tensor1f layer2_3_bn1_weight;
	t4::tensor1f layer2_3_bn1_bias;
	t4::tensor1f layer2_3_bn1_running_mean;
	t4::tensor1f layer2_3_bn1_running_var;
	t4::tensor4f layer2_3_conv2_weight;
	t4::tensor1f layer2_3_bn2_weight;
	t4::tensor1f layer2_3_bn2_bias;
	t4::tensor1f layer2_3_bn2_running_mean;
	t4::tensor1f layer2_3_bn2_running_var;
	t4::tensor4f layer2_3_conv3_weight;
	t4::tensor1f layer2_3_bn3_weight;
	t4::tensor1f layer2_3_bn3_bias;
	t4::tensor1f layer2_3_bn3_running_mean;
	t4::tensor1f layer2_3_bn3_running_var;
	t4::tensor4f layer3_0_conv1_weight;
	t4::tensor1f layer3_0_bn1_weight;
	t4::tensor1f layer3_0_bn1_bias;
	t4::tensor1f layer3_0_bn1_running_mean;
	t4::tensor1f layer3_0_bn1_running_var;
	t4::tensor4f layer3_0_conv2_weight;
	t4::tensor1f layer3_0_bn2_weight;
	t4::tensor1f layer3_0_bn2_bias;
	t4::tensor1f layer3_0_bn2_running_mean;
	t4::tensor1f layer3_0_bn2_running_var;
	t4::tensor4f layer3_0_conv3_weight;
	t4::tensor1f layer3_0_bn3_weight;
	t4::tensor1f layer3_0_bn3_bias;
	t4::tensor1f layer3_0_bn3_running_mean;
	t4::tensor1f layer3_0_bn3_running_var;
	t4::tensor4f layer3_0_downsample_0_weight;
	t4::tensor1f layer3_0_downsample_1_weight;
	t4::tensor1f layer3_0_downsample_1_bias;
	t4::tensor1f layer3_0_downsample_1_running_mean;
	t4::tensor1f layer3_0_downsample_1_running_var;
	t4::tensor4f layer3_1_conv1_weight;
	t4::tensor1f layer3_1_bn1_weight;
	t4::tensor1f layer3_1_bn1_bias;
	t4::tensor1f layer3_1_bn1_running_mean;
	t4::tensor1f layer3_1_bn1_running_var;
	t4::tensor4f layer3_1_conv2_weight;
	t4::tensor1f layer3_1_bn2_weight;
	t4::tensor1f layer3_1_bn2_bias;
	t4::tensor1f layer3_1_bn2_running_mean;
	t4::tensor1f layer3_1_bn2_running_var;
	t4::tensor4f layer3_1_conv3_weight;
	t4::tensor1f layer3_1_bn3_weight;
	t4::tensor1f layer3_1_bn3_bias;
	t4::tensor1f layer3_1_bn3_running_mean;
	t4::tensor1f layer3_1_bn3_running_var;
	t4::tensor4f layer3_2_conv1_weight;
	t4::tensor1f layer3_2_bn1_weight;
	t4::tensor1f layer3_2_bn1_bias;
	t4::tensor1f layer3_2_bn1_running_mean;
	t4::tensor1f layer3_2_bn1_running_var;
	t4::tensor4f layer3_2_conv2_weight;
	t4::tensor1f layer3_2_bn2_weight;
	t4::tensor1f layer3_2_bn2_bias;
	t4::tensor1f layer3_2_bn2_running_mean;
	t4::tensor1f layer3_2_bn2_running_var;
	t4::tensor4f layer3_2_conv3_weight;
	t4::tensor1f layer3_2_bn3_weight;
	t4::tensor1f layer3_2_bn3_bias;
	t4::tensor1f layer3_2_bn3_running_mean;
	t4::tensor1f layer3_2_bn3_running_var;
	t4::tensor4f layer3_3_conv1_weight;
	t4::tensor1f layer3_3_bn1_weight;
	t4::tensor1f layer3_3_bn1_bias;
	t4::tensor1f layer3_3_bn1_running_mean;
	t4::tensor1f layer3_3_bn1_running_var;
	t4::tensor4f layer3_3_conv2_weight;
	t4::tensor1f layer3_3_bn2_weight;
	t4::tensor1f layer3_3_bn2_bias;
	t4::tensor1f layer3_3_bn2_running_mean;
	t4::tensor1f layer3_3_bn2_running_var;
	t4::tensor4f layer3_3_conv3_weight;
	t4::tensor1f layer3_3_bn3_weight;
	t4::tensor1f layer3_3_bn3_bias;
	t4::tensor1f layer3_3_bn3_running_mean;
	t4::tensor1f layer3_3_bn3_running_var;
	t4::tensor4f layer3_4_conv1_weight;
	t4::tensor1f layer3_4_bn1_weight;
	t4::tensor1f layer3_4_bn1_bias;
	t4::tensor1f layer3_4_bn1_running_mean;
	t4::tensor1f layer3_4_bn1_running_var;
	t4::tensor4f layer3_4_conv2_weight;
	t4::tensor1f layer3_4_bn2_weight;
	t4::tensor1f layer3_4_bn2_bias;
	t4::tensor1f layer3_4_bn2_running_mean;
	t4::tensor1f layer3_4_bn2_running_var;
	t4::tensor4f layer3_4_conv3_weight;
	t4::tensor1f layer3_4_bn3_weight;
	t4::tensor1f layer3_4_bn3_bias;
	t4::tensor1f layer3_4_bn3_running_mean;
	t4::tensor1f layer3_4_bn3_running_var;
	t4::tensor4f layer3_5_conv1_weight;
	t4::tensor1f layer3_5_bn1_weight;
	t4::tensor1f layer3_5_bn1_bias;
	t4::tensor1f layer3_5_bn1_running_mean;
	t4::tensor1f layer3_5_bn1_running_var;
	t4::tensor4f layer3_5_conv2_weight;
	t4::tensor1f layer3_5_bn2_weight;
	t4::tensor1f layer3_5_bn2_bias;
	t4::tensor1f layer3_5_bn2_running_mean;
	t4::tensor1f layer3_5_bn2_running_var;
	t4::tensor4f layer3_5_conv3_weight;
	t4::tensor1f layer3_5_bn3_weight;
	t4::tensor1f layer3_5_bn3_bias;
	t4::tensor1f layer3_5_bn3_running_mean;
	t4::tensor1f layer3_5_bn3_running_var;
	t4::tensor4f layer4_0_conv1_weight;
	t4::tensor1f layer4_0_bn1_weight;
	t4::tensor1f layer4_0_bn1_bias;
	t4::tensor1f layer4_0_bn1_running_mean;
	t4::tensor1f layer4_0_bn1_running_var;
	t4::tensor4f layer4_0_conv2_weight;
	t4::tensor1f layer4_0_bn2_weight;
	t4::tensor1f layer4_0_bn2_bias;
	t4::tensor1f layer4_0_bn2_running_mean;
	t4::tensor1f layer4_0_bn2_running_var;
	t4::tensor4f layer4_0_conv3_weight;
	t4::tensor1f layer4_0_bn3_weight;
	t4::tensor1f layer4_0_bn3_bias;
	t4::tensor1f layer4_0_bn3_running_mean;
	t4::tensor1f layer4_0_bn3_running_var;
	t4::tensor4f layer4_0_downsample_0_weight;
	t4::tensor1f layer4_0_downsample_1_weight;
	t4::tensor1f layer4_0_downsample_1_bias;
	t4::tensor1f layer4_0_downsample_1_running_mean;
	t4::tensor1f layer4_0_downsample_1_running_var;
	t4::tensor4f layer4_1_conv1_weight;
	t4::tensor1f layer4_1_bn1_weight;
	t4::tensor1f layer4_1_bn1_bias;
	t4::tensor1f layer4_1_bn1_running_mean;
	t4::tensor1f layer4_1_bn1_running_var;
	t4::tensor4f layer4_1_conv2_weight;
	t4::tensor1f layer4_1_bn2_weight;
	t4::tensor1f layer4_1_bn2_bias;
	t4::tensor1f layer4_1_bn2_running_mean;
	t4::tensor1f layer4_1_bn2_running_var;
	t4::tensor4f layer4_1_conv3_weight;
	t4::tensor1f layer4_1_bn3_weight;
	t4::tensor1f layer4_1_bn3_bias;
	t4::tensor1f layer4_1_bn3_running_mean;
	t4::tensor1f layer4_1_bn3_running_var;
	t4::tensor4f layer4_2_conv1_weight;
	t4::tensor1f layer4_2_bn1_weight;
	t4::tensor1f layer4_2_bn1_bias;
	t4::tensor1f layer4_2_bn1_running_mean;
	t4::tensor1f layer4_2_bn1_running_var;
	t4::tensor4f layer4_2_conv2_weight;
	t4::tensor1f layer4_2_bn2_weight;
	t4::tensor1f layer4_2_bn2_bias;
	t4::tensor1f layer4_2_bn2_running_mean;
	t4::tensor1f layer4_2_bn2_running_var;
	t4::tensor4f layer4_2_conv3_weight;
	t4::tensor1f layer4_2_bn3_weight;
	t4::tensor1f layer4_2_bn3_bias;
	t4::tensor1f layer4_2_bn3_running_mean;
	t4::tensor1f layer4_2_bn3_running_var;
	t4::tensor2f fc_weight;
	t4::tensor1f fc_bias;
};


ResNet ResNetLoad(const char* filename);

t4::tensor2f ResNetForward(const ResNet& ctx, t4::tensor4f xinput_1);
